package LopCoBan;
import java.util.ArrayList; 
import java.util.Date;

public class HDBan {

    private String MaHD;
    private Date NgayLap;
    private KhachHang mKhachHang;
    private NV_BanHang mNV_BanHang;
    private KhuyenMai mKhuyenMai;
    private ArrayList<ChiTietHDB> mChiTietHDB;

    //Các hàm Contructor
    public HDBan () {
    }
    
    public HDBan (String ma_val, Date nl_val) {
    	MaHD = ma_val;
    	NgayLap = nl_val;   
    	mChiTietHDB = new ArrayList<ChiTietHDB>();
    }
    
    //Thiết lập mã hóa đơn
    public String getMaHD () {
        return MaHD;
    }

    public void setMaHD (String val) {
        this.MaHD = val;
    }
    
    //Ngày lập hóa đơn
    public Date getNgayLap () {
        return NgayLap;
    }

    public void setNgayLap (Date val) {
        this.NgayLap = val;
    }
    
    //Chi tiết hóa đơn bán
    public ArrayList<ChiTietHDB> getChiTietHDB () {
        return mChiTietHDB;
    }
    
    public void setChiTietHDB (ArrayList<ChiTietHDB> val) {
        this.mChiTietHDB = val;
    }
    
    public boolean addChiTietHDB (ChiTietHDB val) {
    	for(ChiTietHDB ct:mChiTietHDB)
    	{
    		if(val == ct) return false;
    	}
    	val.setHDBan(this);
        this.mChiTietHDB.add(val);
        return true;
    }
    
    // Khách hàng
    public KhachHang getKhachHang () {
        return mKhachHang;
    }

    public void setKhachHang (KhachHang val) {
        this.mKhachHang = val;
    }
    
    //Khuyến Mãi
    public KhuyenMai getKhuyenMai () {
        return mKhuyenMai;
    }

    public void setKhuyenMai (KhuyenMai val) {
        this.mKhuyenMai = val;
    }

    //NV bán hàng
    public NV_BanHang getNV_BanHang () {
        return mNV_BanHang;
    }

    public void setNV_BanHang (NV_BanHang val) {
        this.mNV_BanHang = val;
    }
    
    // Tính tiền
    public int TinhTienHD()
    {
    	int sum=0;
    	for(ChiTietHDB ct:mChiTietHDB)
    	{
    		sum += ct.TinhTien();
    	}
    	if(mKhuyenMai!=null)
    	{
    		sum = (int) (sum - sum * mKhuyenMai.getMucGiamGia());
    	}
    	if(mKhachHang!=null)
    	{
    		sum = (int)(sum - sum * mKhachHang.NhomKH_VaoNgay(NgayLap).getNhomKH().getMucGiamGia());
    	}
    	return sum;
    }
    
    public void CongDTL_ChoKH()
    {
    	mKhachHang.CongDTL( (int)(TinhTienHD()/1000) );
    }
    
}

